package fr.afcepf.ai89.esharing.metier;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import fr.afcepf.ai89.esharing.data.IDAOAem;
import fr.afcepf.ai89.esharing.data.IDAOAvis;
import fr.afcepf.ai89.esharing.data.IDAOEmprunt;
import fr.afcepf.ai89.esharing.data.IDAOImgAem;
import fr.afcepf.ai89.esharing.data.IDAOImgProprietaire;
import fr.afcepf.ai89.esharing.data.IDAOIndisponibilite;
import fr.afcepf.ai89.esharing.data.IDAOInvisibiliteAem;
import fr.afcepf.ai89.esharing.data.IDAOMessagePrive;
import fr.afcepf.ai89.esharing.data.IDAOProprietaire;
import fr.afcepf.ai89.esharing.data.IDAOValeur;
import fr.afcepf.ai89.esharing.entity.Aem;
import fr.afcepf.ai89.esharing.entity.Avis;
import fr.afcepf.ai89.esharing.entity.CategorieAem;
import fr.afcepf.ai89.esharing.entity.Emprunt;
import fr.afcepf.ai89.esharing.entity.FrCommune;
import fr.afcepf.ai89.esharing.entity.FrDepartement;
import fr.afcepf.ai89.esharing.entity.FrRegion;
import fr.afcepf.ai89.esharing.entity.ImgAem;
import fr.afcepf.ai89.esharing.entity.ImgProprietaire;
import fr.afcepf.ai89.esharing.entity.Indisponibilite;
import fr.afcepf.ai89.esharing.entity.Marque;
import fr.afcepf.ai89.esharing.entity.Proprietaire;
import fr.afcepf.ai89.esharing.entity.TypeAem;
import fr.afcepf.ai89.esharing.entity.Valeur;

public class BusinessRechercheAem implements IBusinessRechercheAem {

	
	@Override
	public List<Aem> rechercherAems(String[] motsCles, FrRegion region,
			FrDepartement dept, FrCommune commune, Long codePostal,
			Date dateDebut, Date dateFin, CategorieAem categorie,
			Valeur valeur) {
		
		List<Aem> listeAemsRecherche = new ArrayList<Aem>();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAem proxyDataAem = null;
			
			try {
				
				proxyDataAem = (IDAOAem)ctx.lookup("java:global/ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");
				
			}
			catch (Exception e) {
				
				proxyDataAem = (IDAOAem)ctx.lookup("ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");
				
			}
		
		listeAemsRecherche = proxyDataAem.getAems(motsCles, region, dept, commune, codePostal, dateDebut, dateFin, categorie, valeur);
		
		}
		catch(NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return listeAemsRecherche;
	
	}
	
	@Override
	public Aem getFicheAem(int idAem) {
		Aem ficheAem = new Aem();
		List<Valeur> sesValeurs = new ArrayList<Valeur>();
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOAem proxyFicheAem = null;
			IDAOValeur proxyFicheValeur = null;
			
			try {
				proxyFicheAem = (IDAOAem)ctx.lookup("java:global/ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");
				proxyFicheValeur = (IDAOValeur)ctx.lookup("java:global/ESharingPhase1/DAOValeur!fr.afcepf.ai89.esharing.data.IDAOValeur");
			}
			catch (Exception e) {
				proxyFicheAem = (IDAOAem)ctx.lookup("ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");
				proxyFicheValeur = (IDAOValeur)ctx.lookup("ESharingPhase1/DAOValeur!fr.afcepf.ai89.esharing.data.IDAOValeur");
			}
		ficheAem = proxyFicheAem.getAem(idAem);
		sesValeurs = proxyFicheValeur.getValeurs(ficheAem);
		ficheAem.setValeurs(sesValeurs);
		}
		catch(NamingException e) {
			e.printStackTrace();
		}
		return ficheAem;
	}

	@Override
	public Proprietaire getFicheProprietaire(int idProprietaire) {
		Proprietaire ficheProp = new Proprietaire();
		List<Aem> lesAems = new ArrayList<Aem>();
		List<ImgProprietaire> imgProp = new ArrayList<ImgProprietaire>();
		try {	
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyFicheProp = null;
			IDAOAem proxyFicheAem = null;
			IDAOImgProprietaire proxyImgProp= null;
		try {
			proxyFicheAem = (IDAOAem)ctx.lookup("java:global/ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");
			proxyFicheProp = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			proxyImgProp = (IDAOImgProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOImgProprietaire!fr.afcepf.ai89.esharing.data.IDAOImgProprietaire");
		}
		catch (Exception e) {
			proxyFicheAem = (IDAOAem)ctx.lookup("ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");
			proxyFicheProp = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			proxyImgProp = (IDAOImgProprietaire)ctx.lookup("ESharingPhase1/DAOImgProprietaire!fr.afcepf.ai89.esharing.data.IDAOImgProprietaire");
		}
		ficheProp = proxyFicheProp.getProp(idProprietaire);
		lesAems = proxyFicheAem.getAems(ficheProp);
		imgProp = proxyImgProp.getImgsProps(ficheProp);
		
		ficheProp.setAems(lesAems);
		ficheProp.setImgProprietaires(imgProp);
		}
		catch(NamingException e) {
			e.printStackTrace();
		}
	return ficheProp;		
	}

	@Override
	public List<Avis> getAvisEmprunteur(Aem aem) {
		
		List<Avis> listeAvis = new ArrayList<Avis>();
		List<Emprunt> listeEmprunts = new ArrayList<Emprunt>();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAvis proxyDataAvis = null;
			IDAOEmprunt proxyDataEmp = null;
			
			try {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("java:global/ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			catch (Exception e) {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			
			listeEmprunts = proxyDataEmp.getEmprunts(aem);
			
			for (Emprunt e : listeEmprunts) {
				
				if (e.getAvisSurPreteur() != null) {
					
					Avis cetAvis = proxyDataAvis.getAvis(e.getAvisSurPreteur().getIdAvis());
					listeAvis.add(cetAvis);
				
				}
				
			}
			
			return listeAvis;
		
		}
		catch(NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return null;
	
	}

	@Override
	public List<Avis> getAvisEmprunteur(Proprietaire prop) {
		
		List<Avis> listeAvis = new ArrayList<Avis>();
		List<Emprunt> listeEmprunts = new ArrayList<Emprunt>();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAvis proxyDataAvis = null;
			IDAOEmprunt proxyDataEmp = null;
			
			try {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("java:global/ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			catch (Exception e) {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			
			listeEmprunts = proxyDataEmp.getPrets(prop);
			
			for (Emprunt e : listeEmprunts) {
				
				Avis cetAvis = proxyDataAvis.getAvis(e.getAvisSurPreteur().getIdAvis());
				listeAvis.add(cetAvis);
				
			}
		
		}
		catch(NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return listeAvis;
	
	}

	@Override
	public List<Avis> getAvisPreteur(Proprietaire prop) {
		
		List<Avis> listeAvis = new ArrayList<Avis>();
		List<Emprunt> listeEmprunts = new ArrayList<Emprunt>();
		
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAvis proxyDataAvis = null;
			IDAOEmprunt proxyDataEmp = null;
			
			try {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("java:global/ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			catch (Exception e) {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			
			listeEmprunts = proxyDataEmp.getEmprunts(prop);
			
			for (Emprunt e : listeEmprunts) {
				
				Avis cetAvis = proxyDataAvis.getAvis(e.getAvisSurEmprunteur().getIdAvis());
				listeAvis.add(cetAvis);
				
			}
		
		}
		catch(NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return listeAvis;
	
	}
	
	@Override
	public List<Indisponibilite> getIndispos(Aem aem) {
		
		List<Indisponibilite> lesIndis = new ArrayList<Indisponibilite>();
		
		try {

			Context ctx;
			ctx = new InitialContext();
			IDAOIndisponibilite proxyDataIndis = null;

			try {

				proxyDataIndis = (IDAOIndisponibilite) ctx
						.lookup("java:global/ESharingPhase1/DAOIndisponibilite!fr.afcepf.ai89.esharing.data.IDAOIndisponibilite");

			} catch (Exception e) {

				proxyDataIndis = (IDAOIndisponibilite) ctx
						.lookup("ESharingPhase1/DAOIndisponibilite!fr.afcepf.ai89.esharing.data.IDAOIndisponibilite");

			}

			lesIndis = proxyDataIndis.getIndispos(aem);

		} catch (NamingException e) {

			e.printStackTrace();

		}
		return lesIndis;

	}

	@Override
	public List<Emprunt> getEmprunts(Aem aem) {

		List<Emprunt> mesEmprunts = new ArrayList<Emprunt>();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOEmprunt proxyDataEmprunt = null;
			
			try {
				
				proxyDataEmprunt = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
			
			}
			catch (Exception e ) {
				
				proxyDataEmprunt = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
			
			}
			
			mesEmprunts = proxyDataEmprunt.getEmprunts(aem);
				
		}
		catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return mesEmprunts;

	}
	
	@Override
	public String getValeur(Aem ceci){
		
		List<Valeur> vals = new ArrayList<Valeur>();
		Valeur val = new Valeur();
		
		try {

			Context ctx;
			ctx = new InitialContext();
			IDAOValeur proxyDataValeur = null;

			try {

				proxyDataValeur = (IDAOValeur) ctx.lookup("java:global/ESharingPhase1/DAOValeur!fr.afcepf.ai89.esharing.data.IDAOValeur");

			} catch (Exception e) {

				proxyDataValeur = (IDAOValeur) ctx.lookup("ESharingPhase1/DAOValeur!fr.afcepf.ai89.esharing.data.IDAOValeur");

			}
			
			vals = proxyDataValeur.getValeurs(ceci);

		} catch (NamingException e) {

			e.printStackTrace();

					
		}
		
		if (vals.size() > 0) {
			
			val = vals.get(vals.size() - 1);
			return val.getValeurJournaliere().toString();
			
		}
		
		return "0.00";
		
	}
	
	@Override
	public String getStatut(Aem aem) {
		
		String status = new String();
		boolean estEmprunte = false;
		boolean estIndisponible = false;
		
		Date ceJour = new Date();
		
		List<Emprunt> mesEmprunts = new ArrayList<Emprunt>();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOEmprunt proxyDataEmprunt = null;
			
			try {
				
				proxyDataEmprunt = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
			
			}
			catch (Exception e ) {
				
				proxyDataEmprunt = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
			
			}
			
			mesEmprunts = proxyDataEmprunt.getEmprunts(aem);
				
		}
		catch (NamingException e) {
			
			e.printStackTrace();
			
		}

		for (Emprunt em : mesEmprunts) {
			
			//System.out.println("Val : " + em.getDateValidation() + " Annul : " + em.getDateAnnulation() + " Début : " + em.getDateDebut() + " début avant aujourd'hui ? " + em.getDateDebut().before(ceJour) + " Restitué ? " + em.getDateRestitution());
			if (em.getDateValidation() != null 
			 && em.getDateAnnulation() == null 
			 && em.getDateDebut().before(ceJour) 
			 && em.getDateRestitution() == null) {
				
				estEmprunte = true;
				
			}
			
		}
		
		ceJour = new Date();
		
		if (estEmprunte) {
			
			status = "Emprunté";
			
			//System.out.println("******MARQUED EMPRUNTED******");
			
		}
		else {
			
			List<Indisponibilite> lesIndis = new ArrayList<Indisponibilite>();
			
			try {

				Context ctx;
				ctx = new InitialContext();
				IDAOIndisponibilite proxyDataIndis = null;

				try {

					proxyDataIndis = (IDAOIndisponibilite) ctx
							.lookup("java:global/ESharingPhase1/DAOIndisponibilite!fr.afcepf.ai89.esharing.data.IDAOIndisponibilite");

				} catch (Exception e) {

					proxyDataIndis = (IDAOIndisponibilite) ctx
							.lookup("ESharingPhase1/DAOIndisponibilite!fr.afcepf.ai89.esharing.data.IDAOIndisponibilite");

				}

				lesIndis = proxyDataIndis.getIndispos(aem);

			} catch (NamingException e) {

				e.printStackTrace();

			}
						
			ceJour = new Date();
			
			for (Indisponibilite id : lesIndis) {
				
				if (id.getDateDebutIndisponibiliteAem().before(ceJour) && id.getDateFinIndisponibiliteAem().after(ceJour) && id.getDateRetraitIndisponibiliteAem() == null) {
					
					estIndisponible = true;
					
				}
				
			}
			
			if (estIndisponible) {
				
				status = "Indisponible";
				//System.out.println("******MARQUED INDISPONIBLE******");
				
			}
			else {
				
				status = "Disponible";
				//System.out.println("******MARQUED DISPONIBLE******");
				
			}
			
		}
		
		return status;
		
	}

	@Override
	public double getRating(Aem aem) {

		List<Emprunt> listeEmprunts = new ArrayList<Emprunt>();
		double rating = 0;
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAvis proxyDataAvis = null;
			IDAOEmprunt proxyDataEmp = null;
			
			try {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("java:global/ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			catch (Exception e) {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			
			listeEmprunts = proxyDataEmp.getEmprunts(aem);
			
			int etoiles = 0;
			int numAvis = 0;
			
			for (Emprunt e : listeEmprunts) {
				
				if (e.getAvisSurPreteur() != null) {
					
					Avis cetAvis = proxyDataAvis.getAvis(e.getAvisSurPreteur().getIdAvis());
					etoiles = etoiles + cetAvis.getNoteAvis().getValeurNote();
					numAvis++;
					
				}
				
			}
			
			if (numAvis != 0) {
				
				rating = etoiles/numAvis;
			
			}
							
		}
		catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return rating;

	}

	@Override
	public String getImage(Aem aem) {

		List<ImgAem> imgs = new ArrayList<ImgAem>();
		ImgAem img = new ImgAem();
		
		try {

			Context ctx;
			ctx = new InitialContext();
			IDAOImgAem proxyDataImgAem = null;

			try {

				proxyDataImgAem = (IDAOImgAem) ctx.lookup("java:global/ESharingPhase1/DAOImgAem!fr.afcepf.ai89.esharing.data.IDAOImgAem");

			} catch (Exception e) {

				proxyDataImgAem = (IDAOImgAem) ctx.lookup("ESharingPhase1/DAOImgAem!fr.afcepf.ai89.esharing.data.IDAOImgAem");

			}
			
			imgs = proxyDataImgAem.getImgsAems(aem);

		} catch (NamingException e) {

			e.printStackTrace();

					
		}
		
		if (imgs.size() > 0) {
			
			img = imgs.get(imgs.size() - 1);
			return img.getLienImgAem();
			
		}
		
		return "defaut.jpg";

	}

	@Override
	public List<Aem> getAems(Proprietaire prop) {
		try {

			Context ctx;
			ctx = new InitialContext();
			IDAOAem proxyDataAem = null;

			try {

				proxyDataAem = (IDAOAem) ctx.lookup("java:global/ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");

			} catch (Exception e) {

				proxyDataAem = (IDAOAem) ctx.lookup("ESharingPhase1/DAOAem!fr.afcepf.ai89.esharing.data.IDAOAem");

			}

			List<Aem> aems = proxyDataAem.getAems(prop);
			
			return aems;

		} catch (NamingException e) {

			e.printStackTrace();

		}
		return null;
	}
	
	@Override
	public double getRatingPreteur(Proprietaire prop) {

		List<Emprunt> listeEmprunts = new ArrayList<Emprunt>();
		double rating = 0;
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAvis proxyDataAvis = null;
			IDAOEmprunt proxyDataEmp = null;
			
			try {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("java:global/ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			catch (Exception e) {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			
			listeEmprunts = proxyDataEmp.getPrets(prop);
			
			int etoiles = 0;
			int numAvis = 0;
			
			for (Emprunt e : listeEmprunts) {
				
				if (e.getAvisSurPreteur() != null) {
					
					Avis cetAvis = proxyDataAvis.getAvis(e.getAvisSurPreteur().getIdAvis());
					etoiles = etoiles + cetAvis.getNoteAvis().getValeurNote();
					numAvis++;
					
				}
				
			}
			
			if (numAvis != 0) {
				
				rating = etoiles/numAvis;
			
			}
							
		}
		catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return rating;

	}

	@Override
	public double getRatingEmprunteur(Proprietaire prop) {

		List<Emprunt> listeEmprunts = new ArrayList<Emprunt>();
		double rating = 0;
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOAvis proxyDataAvis = null;
			IDAOEmprunt proxyDataEmp = null;
			
			try {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("java:global/ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			catch (Exception e) {
				
				proxyDataAvis = (IDAOAvis)ctx.lookup("ESharingPhase1/DAOAvis!fr.afcepf.ai89.esharing.data.IDAOAvis");
				proxyDataEmp = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
				
			}
			
			listeEmprunts = proxyDataEmp.getEmprunts(prop);
			
			int etoiles = 0;
			int numAvis = 0;
			
			for (Emprunt e : listeEmprunts) {
				
				if (e.getAvisSurPreteur() != null) {
					
					Avis cetAvis = proxyDataAvis.getAvis(e.getAvisSurEmprunteur().getIdAvis());
					etoiles = etoiles + cetAvis.getNoteAvis().getValeurNote();
					numAvis++;
					
				}
				
			}
			
			if (numAvis != 0) {
				
				rating = etoiles/numAvis;
			
			}
							
		}
		catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return rating;

	}
	
	@Override public Emprunt getEmprunt(Avis aSurPreteur) {
		
		Emprunt monEmprunt = new Emprunt();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			IDAOEmprunt proxyDataEmprunt = null;
			
			try {
				
				proxyDataEmprunt = (IDAOEmprunt)ctx.lookup("java:global/ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
			
			}
			catch (Exception e ) {
				
				proxyDataEmprunt = (IDAOEmprunt)ctx.lookup("ESharingPhase1/DAOEmprunt!fr.afcepf.ai89.esharing.data.IDAOEmprunt");
			
			}
			
			monEmprunt = proxyDataEmprunt.getEmprunt(aSurPreteur);
				
		}
		catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return monEmprunt;
		
	}

}
